import { Menu } from 'src/modules/menu/entities/menu.entity';
import { Permission } from 'src/modules/permission/entities/permission.entity';
import { Column, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn, Unique } from 'typeorm';

/**
 * 组件
 */
@Entity('role')
export class Role {
  // 自增Id
  @PrimaryGeneratedColumn()
  id: number;

  @Column({
    comment: '角色名称',
  })
  @Unique(['name'])
  name: string;

  @Column({
    comment: '备注',
  })
  remark: string;

  // 多对多 （多角色对多菜单）
  @ManyToMany(() => Menu, { cascade: true })
  // 建立一个新的关联表
  @JoinTable({
    name: 'role_menu',
  })
  menus: Menu[];

  // 多对多 （多角色对多权限）
  @ManyToMany(() => Permission, { cascade: true })
  // 建立一个新的关联表
  @JoinTable({
    name: 'role_permission',
  })
  permissions: Permission[];
}
